class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        def add(n1,n2):
            if len(n1)<len(n2):
                temp=n1
                n1=n2
                n2=temp
            result=""
            temp=0
            for i in range(1,len(n1)+1):
                mid=temp+int(n1[-i])
                if i<len(n2)+1:
                    mid+=int(n2[-i])
                result=str(mid%10)+result
                temp=mid//10
            if temp!=0:
                result=str(temp)+result
            return result  
        def multi_1d(n1,m):
            result=""
            temp=0
            for i in reversed(n1):
                mid=int(i)*m+temp
                result=str(mid%10)+result
                temp=mid//10
            if temp!=0:
                result=str(temp)+result
            return result   
        if num1=="0" or num2=="0":
            return "0"
        vocab=["0"]*10
        result="0"
        for index,i in enumerate(reversed(num2)):
            if vocab[int(i)]=="0":
                m=int(i)
                vocab[m]=multi_1d(num1,m)
            result=add(result,vocab[int(i)]+"0"*index)
        return result


'''
执行用时：
320 ms
, 在所有 Python3 提交中击败了
18.22%
的用户
内存消耗：
14.9 MB
, 在所有 Python3 提交中击败了
38.87%
的用户
'''